【JS-task4】对一个数组 filter、some、map、foreach的操作分别有什么作用?

小课堂【深圳219期】

分享人:钟楚炯

目录

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

迭代的概念

迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。

every()、filter()、some()、map()、forEach()是ECMAScript5为数组定义的5个迭代方法,是为了更方便的对数组进行操作而设计的。

2.知识剖析

5个迭代方法

ECMAScript5为数组定义了5个迭代方法,每个方法都接收两个参数:

  1. 要在每一项上运行的函数。
  2. 运行该函数的作用域对象。

传入这些方法中的函数会接收三个参数:

  1. 数组项的值
  2. 该项在数组中的位置
  3. 数组对象本身

forEach():对数组的每一项运行给定函数,这个方法没有返回值

map():对数组的每一项运行给定函数,返回每次函数调用的结果组成的数组

filter():对数组的每一项运行给定函数,返回该函数会返回true的项组成的数组

every():对数组的每一项运行给定函数,如果该函数对每一项都返回true,则返回true,否则返回false

some():对数组的每一项运行给定函数,如果该函数对任一项返回true,则返回true

3.常见问题

循环、迭代、遍历和递归的区别?

4.解决方案

循环(loop):指的是在满足条件的情况下,重复执行同一段代码。一般语言都会有三种类型的循环语句:for语句、while语句和do While语句。

可以理解为:循环就是迭代(重复)一些命令的代码块, 如果循环控制条件不满足的话, 就结束循环.

迭代(iterate),指的是按照某种顺序逐个访问列表中的每一项

迭代算法:是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值

遍历(traversal),是树形结构的一种重要运算,指的是按照一定的规则访问树形结构中的每个节点,而且每个节点都只访问一次。

递归(recursion)在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。例如,当两面镜子相互之间近似平行时,镜中嵌套的图像是以无限递归的形式出现的。

可以理解为:指的是一个函数不断调用自身的行为。

5.编码实战

6.扩展思考

相对于for(),JS数组自定义的数组迭代方式有哪些好处?
在实现相同功能的前提下,后者除了能够节省代码量外,在实现某些功能上的流程中存在很多有意思的优势,比如forEach相比普通的for循环的优势在于对稀疏数组的处理,会跳过数组中的空位。for+i在性能测试上是优越于后者,但是前提是,array的length要事先计算出来,而在处理非常大量的数据时候,后者的优势就显而易见了。

7.参考文献

参考:javascript递归、循环、迭代、遍历和枚举概念

参考:js数组操作--使用迭代方法替代for循环

8.更多讨论

感谢大家观看

BY : 钟楚炯